package com.geekgo.flowcontroller.annotation;

import com.geekgo.flowcontroller.common.Rates;
import com.geekgo.flowcontroller.core.RateLimitStrategy;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author geekgo
 * @version 2016/8/3 17:03
 */
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface DPSRate {

    /**
     * 如果不指定，则为方法的全称
     * @return
     */
    String key() default "";

    /**
     * 如果不指定，则继承类注解的rate值
     * @return
     */
    double rate() default Rates.RATE_USING_SUPER;

    /**
     *如果相同的key的ratelimit已存在则采用什么策略
     * @return
     */
    RateLimitStrategy strategy() default RateLimitStrategy.USE_MIN;
}
